#include <stdio.h>
/*
输入n段文本(n<100)，每段不超过500个有效字符，每段文本用回车隔开，统计出文本中所有的空格、大写字母、小写字母、数字、其他字符的个数。
提示：下列代码已完成n段文本的输入功能，请自行理解，然后继续完善统计功能即可。
#include <stdio.h>
int main(){
    int n,i,j;
    char s[100][501];
    int space=0,upper=0,lower=0,digit=0,other=0;
    scanf("%d", &n);    
    getchar();//若不使用getchar，下句gets会接受scanf输入的回车
    for(i=0;i<n;i++){
        gets(s[i]);
        //scanf("%[^\n]s",s[i]);//方法2，scanf不会接受上句scanf输入的回车，但它默认不能输入空格，可使用正则表达式格式化;
    }
    //补充统计功能代码
}
输入示例：
2
abc ABc 123;
123 AAA; 999 zxs
输出示例：
5 5 7 9 2
*/
int main(){
    int n,i,j;
    char s[100][501];
    int space=0,upper=0,lower=0,digit=0,other=0;
    scanf("%d", &n);    
    getchar();//若不使用getchar，下句gets会接受scanf输入的回车
    for(i=0;i<n;i++){
        gets(s[i]);
        //scanf("%[^\n]s",s[i]);//方法2，scanf不会接受上句scanf输入的回车，但它默认不能输入空格，可使用正则表达式格式化;
    }
    //补充统计功能代码
    for(i=0;i<n;i++){
        for(j=0;s[i][j]!='\0';j++){//只要数组没到结束值就进行下面的循环
            if(s[i][j]==' '){
                space++;
            }
            else if(s[i][j]>='A' && s[i][j]<='Z'){
                upper++;
            }
            else if(s[i][j]>='a' && s[i][j]<='z'){
                lower++;
            }
            else if(s[i][j]>='0' && s[i][j]<='9'){
                digit++;
            }
            else{
                other++;
            }
        }
    }
    printf("%d %d %d %d %d",space,upper,lower,digit,other);
    return 0;
}